package com.halfsword.creativecraft.datagen;

import com.halfsword.creativecraft.CreativeCraft;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.PoiTypeTagsProvider;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.PoiTypeTags;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.Nullable;

import java.util.concurrent.CompletableFuture;

/**
 * 兴趣点(POI)标签生成器 - DeepSeek 提供核心注释
 *
 * <p>本类负责为模组自定义的兴趣点(Point of Interest)添加标签：</p>
 * <ul>
 *   <li>将自定义POI关联到原版标签系统</li>
 *   <li>确保村民能识别模组的工作站点</li>
 *   <li>支持村民职业分配和工作机制</li>
 * </ul>
 *
 * <p>关键功能：</p>
 * <ol>
 *   <li>将自定义音乐POI标记为可获取的工作站点</li>
 *   <li>保持与原版村民职业系统的兼容性</li>
 *   <li>确保数据生成器能正确创建标签</li>
 * </ol>
 */
public class PoiTypeTagsProviders extends PoiTypeTagsProvider {

    /**
     * 构造函数 - DeepSeek 注释
     *
     * @param packOutput        数据包输出路径
     * @param lookupProvider    注册表查找提供器
     * @param existingFileHelper 现有文件帮助器
     */
    public PoiTypeTagsProviders(PackOutput packOutput,
                                CompletableFuture<HolderLookup.Provider> lookupProvider,
                                @Nullable ExistingFileHelper existingFileHelper) {
        // 调用父类构造器，指定模组ID
        super(packOutput, lookupProvider, CreativeCraft.MOD_ID, existingFileHelper);
    }

    /**
     * 添加POI标签 - DeepSeek 注释
     *
     * <p>核心操作：将自定义音乐POI添加到"可获取的工作站点"标签</p>
     *
     * <p>功能影响：</p>
     * <ul>
     *   <li>村民会将该POI识别为有效工作地点</li>
     *   <li>失业村民可在此获取职业</li>
     *   <li>已就业村民会定期前来工作</li>
     * </ul>
     */
    @Override
    protected void addTags(HolderLookup.Provider p_256206_) {
        // 获取"可获取的工作站点"标签
        tag(PoiTypeTags.ACQUIRABLE_JOB_SITE)
                // 添加自定义音乐POI到该标签
                .addOptional(ResourceLocation.fromNamespaceAndPath(
                        CreativeCraft.MOD_ID, // 模组ID
                        "music_poi"           // POI注册名
                ));


    }
}